17781
18039
أريد حذف فرع محليًا وعن بُعد.
المحاولات الفاشلة لحذف فرع بعيد
أجهزة التحكم عن بُعد / origin / bugfix $ git
خطأ: الفرع 'remotes / origin / bugfix' غير موجود.
أصل / خطأ $ git Branch -d
خطأ: الفرع 'origin / bugfix' غير موجود.
فرع $ git -rd origin / bugfix
تم حذف أصل الفرع البعيد / bugfix (كان 2a14ef7).
دفع بوابة $
كل شيئ محدث إلى اليوم
بوابة السحب $
من github.com:gituser/gitproject
* [فرع جديد] bugfix -> origin / bugfix
بالفعل حتى الان.
ما الذي يجب أن أفعله بشكل مختلف لحذف فرع أجهزة التحكم عن بُعد / origin / bugfix محليًا وعن بُعد؟ 
1
2
التالى
ملخص تنفيذي
$ git push -d  
فرع git $ -d 
لاحظ أنه في معظم الحالات يكون الاسم البعيد هو الأصل.
في مثل هذه الحالة ، سيتعين عليك استخدام الأمر مثل ذلك.
أصل $ git push -d 
حذف الفرع المحلي
لحذف الفرع المحلي ، استخدم أحد الخيارات التالية:
$ git Branch -d Branch_name
فرع $ git -D Branch_name
ملاحظة: يعد الخيار -d اسمًا مستعارًا لـ --delete ، والذي يحذف الفرع فقط إذا كان قد تم دمجه بالكامل بالفعل في الفرع الرئيسي. يمكنك أيضًا استخدام -D ، وهو اسم مستعار لـ --delete --force ، والذي يحذف الفرع "بغض النظر عن حالته المدمجة". [المصدر: man git-Branch]
لاحظ أيضًا أن git Branch -d Branch_name ستفشل إذا كنت حاليًا
في الفرع الذي تريد إزالته. تبدأ الرسالة بـ
خطأ: لا يمكن حذف الفرع 'Branch_name'. إذا كان الأمر كذلك ، قم بالتبديل أولاً
لبعض الفروع الأخرى ، على سبيل المثال: git checkout master.
Delete Remote Branch [تم التحديث بتاريخ 8 سبتمبر 2017]
بدءًا من Git v1.7.0 ، يمكنك حذف فرع بعيد باستخدام
$ git push  - حذف 
الذي قد يكون من الأسهل تذكره من
دفع git $ : 
الذي تمت إضافته في Git v1.5.0 "لحذف فرع بعيد أو علامة."
بدءًا من Git v2.8.0 ، يمكنك أيضًا استخدام git push مع الخيار -d كاسم مستعار لـ --delete.
لذلك ، فإن إصدار Git الذي قمت بتثبيته سيحدد ما إذا كنت بحاجة إلى استخدام بناء جملة أسهل أو أصعب.
حذف الفرع البعيد [الرد الأصلي من 5 يناير 2010]
من الفصل 3 من Pro Git بواسطة Scott Chacon:
حذف الفروع البعيدة
لنفترض أنك انتهيت من فرع بعيد - لنفترض أنك انتهيت أنت والمتعاونون معك من ميزة وقمت بدمجها في الفرع الرئيسي لجهاز التحكم عن بُعد (أو أي فرع يوجد فيه خط الشفرة الثابت). يمكنك حذف فرع بعيد باستخدام الصيغة المنفصلة نوعا ما git push [remotename]: [فرع]. إذا كنت تريد حذف فرع إصلاح الخادم من الخادم ، فقم بتشغيل ما يلي:
أصل الدفع $ git: serverfix
إلى git@github.com: schacon / simplegit.git
- [تم حذف] serverfix
فقاعة. لا مزيد من الفروع على الخادم الخاص بك. قد ترغب في الإمساك بهذه الصفحة ، لأنك ستحتاج إلى هذا الأمر ، ومن المحتمل أن تنسى بناء الجملة. هناك طريقة لتذكر هذا الأمر عن طريق استدعاء git push [remotename] [localbranch]: بناء الجملة [remotebranch] الذي ذهبنا إليه سابقًا بقليل. إذا تركت الجزء [localbranch] ، فأنت في الأساس تقول ، "لا تأخذ شيئًا من جانبي واجعله [remotebranch]."
لقد أصدرت git push origin: bugfix وعملت بشكل جميل. كان سكوت تشاكون محقًا - سأرغب في سماع هذه الصفحة (أو تقريبًا أذن الكلب من خلال الإجابة على هذا على موقع Stack Overflow).
ثم يجب عليك تنفيذ هذا على أجهزة أخرى
# جلب التغييرات من جميع أجهزة التحكم عن بعد وحذفها محليًا
# فروع / علامات محذوفة عن بعد ، إلخ
# - سيقوم الربيع بالمهمة: -؛
git fetch - all --prune
لنشر التغييرات.
|
إجابة ماثيو رائعة لإزالة الفروع البعيدة وأنا أيضًا أقدر التفسير ، ولكن للتمييز البسيط بين الأمرين:
لإزالة فرع محلي من جهازك:
git Branch -d {the_local_branch} (استخدم -D بدلاً من ذلك لفرض حذف الفرع دون التحقق من الحالة المدمجة)
لإزالة فرع بعيد من الخادم:
أصل git push - حذف {the_remote_branch}
المرجع: Git: حذف فرع (محلي أو بعيد)
|
الإجابات القصيرة
إذا كنت تريد توضيحات أكثر تفصيلاً للأوامر التالية ، فراجع الإجابات الطويلة في القسم التالي.
حذف فرع بعيد
أصل git push - حذف  # إصدار Git 1.7.0 أو أحدث
أصل دفع git -d  # إصدار أقصر (Git 1.7.0 أو أحدث)
أصل دفع git:  # إصدارات Git الأقدم من 1.7.0
حذف فرع محلي
فرع بوابة - حذف <فرع>
git Branch -d  # إصدار أقصر
git Branch -D  # فرض حذف الفروع غير المدمجة
حذف فرع التتبع عن بعد المحلي
فرع git - حذف - أجهزة التحكم عن بعد> / <فرع>
git Branch -dr  /  # أقصر
git fetch  --prune # حذف عدة فروع تتبع عن بعد متقادمة
جلب git  -p # أقصر
الجواب الطويل: هناك ثلاثة فروع مختلفة للحذف!
عندما تتعامل مع حذف الفروع محليًا وعن بعد ، ضع في اعتبارك أن هناك ثلاثة فروع مختلفة معنية:
الفرع المحلي X.
فرع الأصل البعيد X.
أصل فرع التعقب عن بعد المحلي / X الذي يتتبع الفرع البعيد X.
الملصق الأصلي المستخدم:
فرع git -rd origin / bugfix
الذي حذف فقط أصل فرع التتبع المحلي / bugfix الخاص به ، وليس إصلاح خطأ الفرع البعيد الفعلي في الأصل.
لحذف هذا الفرع البعيد الفعلي ، تحتاج
مصدر git push - حذف bugfix
تفاصيل اضافية
تصف الأقسام التالية تفاصيل إضافية يجب مراعاتها عند حذف الفروع عن بُعد والتتبع عن بُعد.
يؤدي الضغط لحذف الفروع البعيدة أيضًا إلى إزالة فروع التتبع عن بُعد
لاحظ أن حذف الفرع البعيد X من سطر الأوامرسيؤدي استخدام git push أيضًا إلى إزالة أصل فرع التتبع عن بُعد المحلي / X ، لذلك ليس من الضروري تقليم فرع التتبع عن بُعد القديم باستخدام git fetch --prune أو git fetch -p. ومع ذلك ، لن يضر إذا فعلت ذلك على أي حال.
يمكنك التحقق من حذف أصل فرع التعقب عن بعد / X أيضًا عن طريق تشغيل ما يلي:
# عرض فقط تتبع الفروع عن بعد
فرع بوابة - عن بعد
فرع بوابة -r
# عرض الفروع المحلية بدقة وكذلك الفروع التي تتبع عن بعد
فرع بوابة - الكل
فرع git -a
تشذيب أصل فرع التعقب عن بعد المحلي القديم / X
إذا لم تحذف الفرع البعيد الخاص بك X من سطر الأوامر (كما هو مذكور أعلاه) ، فسيظل المستودع المحلي الخاص بك يحتوي على أصل فرع التتبع عن بعد / X (قديم). يمكن أن يحدث هذا إذا قمت بحذف فرع بعيد مباشرة من خلال واجهة الويب الخاصة بـ GitHub ، على سبيل المثال.
تتمثل الطريقة النموذجية لإزالة فروع التتبع عن بُعد القديمة هذه (منذ الإصدار 1.6.6 من Git) في تشغيل git fetch باستخدام --prune أو أقصر -p. لاحظ أن هذا يزيل جميع فروع التتبع عن بعد المحلية القديمة لأي فروع بعيدة لم تعد موجودة على جهاز التحكم عن بُعد:
أصل جلب git --prune
git fetch origin -p # Shorter
فيما يلي الاقتباس المناسب من ملاحظات الإصدار 1.6.6 (التركيز الخاص بي):
تعلمت "git fetch" - جميع الخيارات المتعددة ، لتشغيل الجلب منها
العديد من المستودعات وخيار --prune لإزالة التتبع عن بعد
الفروع التي لا معنى لها. هذه تجعل "git remote update" و "git
تقليم عن بعد "أقل ضرورة (لا توجد خطة لإزالة" بعيد
تحديث "ولا" تقليم عن بعد "، على الرغم من).
بديل للتقليم التلقائي أعلاه لفروع التتبع عن بعد المتقادمة
بدلاً من ذلك ، بدلاً من تشذيب فروع التتبع عن بُعد المحلية القديمة من خلال git fetch -p ، يمكنك تجنب إجراء عملية إضافية للشبكة بمجرد إزالة الفرع (الفروع) يدويًا باستخدام - remote أو -r flags:
فرع بوابة - حذف - أجهزة التحكم عن بعد / X
فرع git -dr origin / X # Shorter
أنظر أيضا
git-Branch (1) Manual Page.
git-fetch (1) Manual Page.
Pro Git § 3.5 فرع Git - الفروع البعيدة.
|
خطوات حذف الفرع:
لحذف الفرع البعيد:
أصل git push - حذف 
لحذف الفرع المحلي لديك ثلاث طرق:
1: git Branch -D 
2: فرع git - حذف - فرض  # مماثل لـ -D
3: فرع git - حذف  # خطأ عند إلغاء الدمج
اشرح: حسنًا ، فقط اشرح ما يحدث هنا!
ما عليك سوى إجراء git push origin - حذف لحذف فرعك البعيد فقط ، أضف اسم الفرع في النهاية وسيؤدي ذلك إلى حذفه ودفعه إلى جهاز التحكم عن بُعد في نفس الوقت ...
وأيضًا git Branch -D التي تقوم ببساطة بحذف الفرع المحلي فقط! ...
تشير D إلى --delete --force التي ستحذف الفرع حتى إذا لم يتم دمجها (إجبار الحذف) ، ولكن يمكنك أيضًا استخدام -d التي تعني --delete والتي تؤدي إلى حدوث خطأ يتعلق بحالة دمج الفرع ...
أقوم أيضًا بإنشاء الصورة أدناه لإظهار الخطوات:
|
يمكنك أيضًا استخدام ما يلي لحذف الفرع البعيد
git push - حذف serverfix
الذي يفعل نفس الشيء مثل
مصدر git push: serverfix
ولكن قد يكون من الأسهل تذكرها.
|
نصيحة: عند حذف الفروع باستخدام
git Branch -d  # يحذف الفرع المحلي
أو
أصل دفع git:  # يحذف الفرع البعيد
تم حذف المراجع فقط. على الرغم من إزالة الفرع فعليًا من جهاز التحكم عن بُعد ، إلا أن الإشارات إليه لا تزال موجودة في المستودعات المحلية لأعضاء فريقك. هذا يعني أنه بالنسبة لأعضاء الفريق الآخرين ، تظل الفروع المحذوفة مرئية عند عمل فرع git -a.
لحل هذه المشكلة ، يمكن لأعضاء فريقك تقليم الفروع المحذوفة باستخدام
git remote prune 
هذا هو أصل git البعيد prune.
|
إذا كنت ترغب في حذف فرع ، قم أولاً بتسجيل الخروج إلى الفرع غير الفرع المراد حذفه.
بوابة الخروج other_than_branch_to_be_deleted
حذف الفرع المحلي:
فرع git -D Branch_to_be_deleted
حذف الفرع البعيد:
مصدر git push - حذف Branch_to_be_deleted
|
فرع بوابة- D <الاسم من فرع>
git Branch -D -r origin / 
أصل دفع بوابة: 
|
هذا بسيط: فقط قم بتشغيل الأمر التالي:
لحذف فرع Git محليًا وعن بُعد ، احذف الفرع المحلي أولاً باستخدام هذا الأمر:
git فرع د مثال
(هذا المثال هو اسم الفرع.)
وبعد ذلك ، احذف الفرع البعيد باستخدام هذا الأمر:
أصل دفع بوابة: مثال
|
انها بسيطة جدا:
لحذف الفرع البعيد
أصل git push -d 
أو
أصل دفع بوابة: 
لحذف الفرع المحلي بالقوة
فرع بوابة- D <اسم الفرع>
|
نهج آخر هو:
git push - أصل تقني
تحذير: سيؤدي هذا إلى حذف كافة الفروع البعيدة غير الموجودة محليًا. أو بشكل أكثر شمولاً ،
بوابة دفع - مرآة
سيجعل المستودع البعيد يبدو بشكل فعال مثل النسخة المحلية من المستودع (الرؤوس المحلية وأجهزة التحكم عن بعد والعلامات تنعكس على جهاز التحكم عن بعد).
|
أستخدم ما يلي في إعدادات Bash الخاصة بي:
الاسم المستعار git-shoot = "git pushالأصل - حذف "
ثم يمكنك الاتصال بـ:
اسم فرع git-shoot
|
حذف محليًا:
لحذف فرع محلي ، يمكنك استخدام:
git Branch -d 
لحذف فرع بالقوة ، استخدم -D بدلاً من -d.
فرع git -D 
حذف عن بعد:
هناك خياران:
أصل دفع بوابة: اسم الفرع
مصدر git push - حذف اسم الفرع
أود أن أقترح عليك استخدام الطريقة الثانية لأنها أكثر سهولة.
|
منذ يناير 2013 ، قام GitHub بتضمين زر حذف الفرع بجوار كل فرع في صفحة "الفروع".
منشور مدونة ذي صلة: إنشاء وحذف الفروع
|
إذا كنت تريد إكمال هاتين الخطوتين بأمر واحد ، فيمكنك إنشاء اسم مستعار له عن طريق إضافة ما يلي إلى ~ / .gitconfig:
[اسم مستعار]
rmbranch = "! f () {git Branch -d $ {1} && git push origin --delete $ {1}؛}؛ f"
بدلاً من ذلك ، يمكنك إضافة هذا إلى التكوين العام الخاص بك من سطر الأوامر باستخدام
تكوين git - الاسم المستعار العالمي. rmbranch \
'! f () {git Branch -d $ {1} && git push origin --delete $ {1}؛ }؛F'
ملاحظة: في حالة استخدام -d (حرف صغير d) ، سيتم حذف الفرع فقط إذا تم دمجه. لفرض إجراء الحذف ، ستحتاج إلى استخدام -D (الأحرف الكبيرة D).
|
لحذف فرعك محلياً وعن بعد
الخروج إلى الفرع الرئيسي - git checkout master
احذف الفرع البعيد - git push origin - حذف 
احذف فرعك المحلي - git Branch - احذف 
|
يمكنك أيضًا القيام بذلك باستخدام git remote prune origin
أصل التقليم البعيد $ git
أصل التقليم
عنوان URL: git@example.com/yourrepo.git
* [مجزأة] أصل / بعض الفروع
يقوم بتقليم وحذف فروع التتبع عن بعد من قائمة فرع git -r.
|
بالإضافة إلى الإجابات الأخرى ، غالبًا ما أستخدم أداة git_remote_branch. إنه تثبيت إضافي ، لكنه يمنحك طريقة ملائمة للتفاعل مع الفروع البعيدة. في هذه الحالة ، لحذف:
فرع grb حذف
أجد أنني أيضًا أستخدم أوامر النشر والتتبع كثيرًا.
|
أمر من سطر واحد لحذف كل من المحلي والبعيدة:
D = اسم الفرع ؛ فرع git -D $ D ؛ أصل دفع بوابة: $ D
أو أضف الاسم المستعار أدناه إلى ~ / .gitconfig. الاستعمال: git kill Branch-name
[اسم مستعار]
kill = "! f () {git Branch -D \" $ 1 \ "؛ git push origin - حذف \" $ 1 \ "؛}؛ f"
|
حذف الفروع
لنفترض أن عملنا في الفرع "نموذج الاتصال" قد تم وقد قمنا بالفعل بدمجه في "رئيسي". نظرًا لأننا لم نعد بحاجة إليه ، يمكننا حذفه (محليًا):
نموذج اتصال git - d $
ولحذف الفرع البعيد:
أصل git push - حذف نموذج الاتصال
|
حذف الفرع البعيد
أصل دفع بوابة: 
حذف الفرع المحلي
فرع git -D 
حذف خطوات الفرع المحلي:
الخروج إلى فرع آخر
حذف الفرع المحلي
|
قل ببساطة:
git Branch -d 
أصل دفع بوابة: 
|
أصل git push - حذف <اسم الفرع>
أسهل في التذكر من
أصل دفع بوابة: BranchName
|
يمكنك الآن القيام بذلك باستخدام تطبيق GitHub Desktop.
بعد تشغيل التطبيق
اضغط على المشروع الذي يحتوي الفرع
انتقل إلى الفرع الذي ترغب في حذفه
من قائمة "الفرع" ، حدد "إلغاء النشر ..." ، لحذف الفرع من خوادم GitHub.
من قائمة "الفرع" ، حدد "حذف" اسم_الفرع "..." ، لحذف الفرع من جهازك المحلي (يُعرف باسم الجهاز الذي تعمل عليه حاليًا)
|
للحذف محليًا - (عادي)
فرع git -d my_branch
إذا كان فرعك في تقدم إعادة التأسيس / الدمج ولم يتم ذلك بشكل صحيح ، فهذا يعني أنك ستتلقى خطأ ، إعادة التأسيس / الدمج قيد التقدم ، لذلك في هذه الحالة ، لن تتمكن من حذف الفرع الخاص بك.
لذلك إما أن تحتاج إلى حل إعادة التأسيس / الدمج. خلاف ذلك ، يمكنك إجراء الحذف بالقوة باستخدام ،
فرع بوابة- D my_branch
للحذف في جهاز التحكم عن بعد:
git push - حذف الأصل my_branch
يمكنك أن تفعل الشيء نفسه باستخدام:
أصل دفع بوابة: my_branch # سهل التذكر كلاهما سيفعل الشيء نفسه.
تمثيل رسومي:
|
لن يعمل هذا إذا كان لديك علامة تحمل نفس اسم الفرع الموجود على جهاز التحكم عن بُعد:
أصل دفع $ git: اسم الفرع أو العلامة
خطأ: dst refspec Branch-or-tag-name يتطابق مع أكثر من واحد.
خطأ: فشل في دفع بعض المراجع إلى "git@github.com: SomeName / some-repo.git"
في هذه الحالة ، تحتاج إلى تحديد رغبتك في حذف الفرع وليس العلامة:
أصل دفع البوابة: المراجع / الرؤوس / الفرع أو اسم العلامة
وبالمثل ، لحذف العلامة بدلاً من الفرع الذي ستستخدمه:
أصل دفع بوابة: المراجع / العلامات / الفرع أو اسم العلامة
|
العديد من الإجابات الأخرى ستؤدي إلى أخطاء / تحذيرات. هذا الأسلوب هو دليل خادع نسبيًا على الرغم من أنك قد لا تزال بحاجة إلى git Branch -D Branch_to_delete إذا لم يتم دمجه بالكامل في بعض_الأخرى_الفرع ، على سبيل المثال.
بوابة الخروج some_other_branch
أصل دفع بوابة: Branch_to_delete
فرع git -d Branch_to_delete
لا يلزم التقليم عن بُعد إذا قمت بحذف الفرع البعيد. يتم استخدامه فقط للحصول على أحدث أجهزة التحكم عن بُعد المتوفرة في المستودع الذي تقوم بتتبعه. لقد لاحظت أن git fetch سيضيف أجهزة تحكم عن بُعد ، وليس إزالتها. في ما يلي مثال على وقت قيام git remote prune Origin بشيء ما:
المستخدم أيفعل الخطوات المذكورة أعلاه. سيقوم المستخدم ب بتشغيل الأوامر التالية للاطلاع على أحدث الفروع البعيدة:
جلب بوابة
بوابة أصل تقليم بعيد
فرع بوابة -r
|
لقد سئمت من البحث عن هذه الإجابة على Google ، لذلك اتبعت نهجًا مشابهًا للإجابة التي نشرها كريز كريج سابقًا.
أضفت ما يلي إلى ملفي الشخصي في Bash:
وظيفة gitdelete () {
أصل git push - حذف $ 1
فرع بوابة - D 1 دولار
}
ثم في كل مرة أنتهي من وجود فرع (تم دمجه في رئيسي ، على سبيل المثال) أقوم بتشغيل ما يلي في الجهاز الطرفي:
gitdelete اسم الفرع الخاص بي
... الذي يحذف بعد ذلك اسم فرعي من الأصل وكذلك محليًا.
|
قبل التنفيذ
فرع بوابة - حذف <فرع>
تأكد أولاً من تحديد الاسم الدقيق للفرع البعيد عن طريق تنفيذ:
بوابة ls-remote
سيخبرك هذا بما يجب إدخاله بالضبط لقيمة . (الفرع حساس لحالة الأحرف!)
|
استعمال:
مصدر git push: bugfix # يحذف الفرع البعيد
git Branch -d bugfix # يجب حذف الفرع المحلي يدويًا
إذا كنت متأكدًا من رغبتك في حذفه ، فقم بتشغيل
فرع بوابة- D bugfix
الآن لتنظيف تشغيل الفروع البعيدة المحذوفة
بوابة أصل تقليم بعيد
|
1
2
التالى
سؤال نشط للغاية. اكسب 10 سمعة للإجابة على هذا السؤال. تساعد متطلبات السمعة في حماية هذا السؤال من البريد العشوائي ونشاط عدم الإجابة.
ليس الجواب الذي تبحث عنه؟ تصفح الأسئلة الأخرى الموسومة git version-control git-Branch git-push git-remote أو اطرح سؤالك الخاص.